.\" Copyright (c) 2018 by Eugene Syromyatnikov <evgsyr@gmail.com>,
.\" and Copyright (c) 2018 Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.TH address_families 7 2023-01-22 "Linux man-pages 6.03"
.SH NAME
address_families \- socket address families (domains)
.SH SYNOPSIS
.nf
.BR "#include <sys/types.h>" "          /* See NOTES */"
.B #include <sys/socket.h>
.PP
.BI "int socket(int " domain ", int " type ", int " protocol );
.fi
.SH DESCRIPTION
The
.I domain
argument of the
.BR socket (2)
specifies a communication domain; this selects the protocol
family which will be used for communication.
These families are defined in
.IR <sys/socket.h> .
The formats currently understood by the Linux kernel include:
.TP
.BR AF_UNIX ", " AF_LOCAL
Local communication.
For further information, see
.BR unix (7).
.TP
.B AF_INET
IPv4 Internet protocols.
For further information, see
.BR ip (7).
.TP
.B AF_AX25
Amateur radio AX.25 protocol.
For further information, see
.BR ax25 (4).
.\" Part of ax25-tools
.TP
.B AF_IPX
IPX \- Novell protocols.
.TP
.B AF_APPLETALK
AppleTalk
For further information, see
.BR ddp (7).
.TP
.B AF_NETROM
AX.25 packet layer protocol.
For further information, see
.BR netrom (4),
.\" Part of ax25-tools package
.UR https://www.tldp.org/HOWTO/AX25-HOWTO/x61.html
.I The Packet Radio Protocols and Linux
.UE
and the
.IR AX.25 ", " NET/ROM ", and " "ROSE network programming"
chapters of the
.UR https://www.tldp.org/HOWTO/AX25-HOWTO/x2107.html
.I Linux Amateur Radio AX.25 HOWTO
.UE .
.TP
.B AF_BRIDGE
Can't be used for creating sockets;
mostly used for bridge links in
.BR rtnetlink (7)
protocol commands.
.TP
.B AF_ATMPVC
Access to raw ATM Permanent Virtual Circuits (PVCs).
For further information, see the
.UR https://www.tldp.org/HOWTO/text/ATM-Linux-HOWTO
.I ATM on Linux HOWTO
.UE .
.TP
.B AF_X25
ITU-T X.25 / ISO-8208 protocol.
For further information, see
.BR x25 (7).
.TP
.B AF_INET6
IPv6 Internet protocols.
For further information, see
.BR ipv6 (7).
.TP
.B AF_ROSE
RATS (Radio Amateur Telecommunications Society).
Open Systems environment (ROSE) AX.25 packet layer protocol.
For further information, see the resources listed for
.BR AF_NETROM .
.TP
.B AF_DECnet
DECet protocol sockets.
See
.I Documentation/networking/decnet.txt
in the Linux kernel source tree for details.
.TP
.B AF_NETBEUI
Reserved for "802.2LLC project"; never used.
.TP
.B AF_SECURITY
This was a short-lived (between Linux 2.1.30 and 2.1.99pre2) protocol family
for firewall upcalls.
.TP
.B AF_KEY
Key management protocol, originally developed for usage with IPsec
(since Linux 2.1.38).
This has no relation to
.BR keyctl (2)
and the in-kernel key storage facility.
See
.UR https://tools.ietf.org/html/rfc2367
RFC 2367
.I PF_KEY Key Management API, Version 2
.UE
for details.
.TP
.B AF_NETLINK
Kernel user interface device.
For further information, see
.BR netlink (7).
.TP
.B AF_PACKET
Low-level packet interface.
For further information, see
.BR packet (7).
.\" .TP
.\" .B AF_ASH
.\" Asynchronous Serial Host protocol (?)
.\" Notes from Eugene Syromyatnikov:
.\" I haven't found any concrete information about this one;
.\" it never was implemented in Linux, at least, judging by historical
.\" repos.  There is also this file (and its variations):
.\" https://github.com/ecki/net-tools/blob/master/lib/ash.c
.\" ( https://github.com/ecki/net-tools/commits/master/lib/ash.c )
.\" it mentions "NET-2 distribution" (BSD Net/2?), but, again, I failed
.\" to find any mentions of "ash" protocol there.
.\" (for the reference:
.\" ftp://pdp11.org.ru/pub/unix-archive/Distributions/UCB/Net2/net2.tar.gz )
.\" Another source that mentions it is
.\" https://www.silabs.com/documents/public/user-guides/ug101-uart-gateway-protocol-reference.pdf
.\" https://www.silabs.com/documents/public/user-guides/ug115-ashv3-protocol-reference.pdf
.\" but I doubt that it's related, as former files use 64-byte addresses and
.\" "Hamming-encode of hops", and that's barely combines with a protocol
.\" that is mainly used over serial connection.
.TP
.B AF_ECONET
.\" commit: 349f29d841dbae854bd7367be7c250401f974f47
Acorn Econet protocol (removed in Linux 3.5).
See the
.UR http://www.8bs.com/othrdnld/manuals/econet.shtml
Econet documentation
.UE
for details.
.TP
.B AF_ATMSVC
Access to ATM Switched Virtual Circuits (SVCs)
See the
.UR https://www.tldp.org/HOWTO/text/ATM-Linux-HOWTO
.I ATM on Linux HOWTO
.UE
for details.
.TP
.B AF_RDS
.\" commit: 639b321b4d8f4e412bfbb2a4a19bfebc1e68ace4
Reliable Datagram Sockets (RDS) protocol (since Linux 2.6.30).
RDS over RDMA has no relation to
.B AF_SMC
or
.BR AF_XDP .
For further information, see
.\" rds-tools: https://github.com/oracle/rds-tools/blob/master/rds.7
.\" rds-tools: https://github.com/oracle/rds-tools/blob/master/rds-rdma.7
.BR rds (7),
.BR rds\-rdma (7),
and
.I Documentation/networking/rds.txt
in the Linux kernel source tree.
.TP
.B AF_IRDA
.\" commits: 1ca163afb6fd569b, d64c2a76123f0300
Socket interface over IrDA
(moved to staging in Linux 4.14, removed in Linux 4.17).
.\" irda-utils: https://sourceforge.net/p/irda/code/HEAD/tree/tags/IRDAUTILS_0_9_18/irda-utils/man/irda.7.gz?format=raw
For further information, see
.BR irda (7).
.TP
.B AF_PPPOX
Generic PPP transport layer, for setting up L2 tunnels
(L2TP and PPPoE).
See
.I Documentation/networking/l2tp.txt
in the Linux kernel source tree for details.
.TP
.B AF_WANPIPE
.\" commits: ce0ecd594d78710422599918a608e96dd1ee6024
Legacy protocol for wide area network (WAN) connectivity
that was used by Sangoma WAN cards (called "WANPIPE");
removed in Linux 2.6.21.
.TP
.B AF_LLC
.\" linux-history commit: 34beb106cde7da233d4df35dd3d6cf4fee937caa
Logical link control (IEEE 802.2 LLC) protocol, upper part
of data link layer of ISO/OSI networking protocol stack
(since Linux 2.4);
has no relation to
.BR AF_PACKET .
See chapter
.I 13.5.3. Logical Link Control
in
.I Understanding Linux Kernel Internals
(O'Reilly Media, 2006)
and
.I IEEE Standards for Local Area Networks: Logical Link Control
(The Institute of Electronics and Electronics Engineers, Inc.,
New York, New York, 1985)
for details.
See also
.UR https://wiki.linuxfoundation.org/networking/llc
some historical notes
.UE
regarding its development.
.TP
.B AF_IB
.\" commits: 8d36eb01da5d371f..ce117ffac2e93334
InfiniBand native addressing (since Linux 3.11).
.TP
.B AF_MPLS
.\" commits: 0189197f441602acdca3f97750d392a895b778fd
Multiprotocol Label Switching (since Linux 4.1);
mostly used for configuring MPLS routing via
.BR netlink (7),
as it doesn't expose ability to create sockets to user space.
.TP
.B AF_CAN
.\" commits: 8dbde28d9711475a..5423dd67bd0108a1
Controller Area Network automotive bus protocol (since Linux 2.6.25).
See
.I Documentation/networking/can.rst
in the Linux kernel source tree for details.
.TP
.B AF_TIPC
.\" commits: b97bf3fd8f6a16966d4f18983b2c40993ff937d4
TIPC, "cluster domain sockets" protocol (since Linux 2.6.16).
See
.UR http://tipc.io/programming.html
.I TIPC Programmer's Guide
.UE
and the
.UR http://tipc.io/protocol.html
protocol description
.UE
for details.
.TP
.B AF_BLUETOOTH
.\" commits: 8d36eb01da5d371f..ce117ffac2e93334
Bluetooth low-level socket protocol (since Linux 3.11).
See
.UR https://git.kernel.org\:/pub/scm\:/bluetooth/bluez.git\:/tree/doc/mgmt-api.txt
.I Bluetooth Management API overview
.UE
and
.UR https://people.csail.mit.edu/albert/bluez-intro/
.I An Introduction to Bluetooth Programming
by Albert Huang
.UE
for details.
.TP
.B AF_IUCV
.\" commit: eac3731bd04c7131478722a3c148b78774553116
IUCV (inter-user communication vehicle) z/VM protocol
for hypervisor-guest interaction (since Linux 2.6.21);
has no relation to
.B AF_VSOCK
and/or
.B AF_SMC
See
.UR https://www.ibm.com\:/support\:/knowledgecenter\:/en/SSB27U_6.4.0\:/com.ibm.zvm.v640.hcpb4\:/iucv.htm
.I IUCV protocol overview
.UE
for details.
.TP
.B AF_RXRPC
.\" commit: 17926a79320afa9b95df6b977b40cca6d8713cea
.\" http://people.redhat.com/~dhowells/rxrpc/
.\" https://www.infradead.org/~dhowells/kafs/af_rxrpc_client.html
.\" http://workshop.openafs.org/afsbpw09/talks/thu_2/kafs.pdf
.\" http://pages.cs.wisc.edu/~remzi/OSTEP/dist-afs.pdf
.\" http://web.mit.edu/kolya/afs/rx/rx-spec
Rx, Andrew File System remote procedure call protocol
(since Linux 2.6.22).
See
.I Documentation/networking/rxrpc.txt
in the Linux kernel source tree for details.
.TP
.B AF_ISDN
.\" commit: 1b2b03f8e514e4f68e293846ba511a948b80243c
New "modular ISDN" driver interface protocol (since Linux 2.6.27).
See the
.UR http://www.misdn.eu/wiki/Main_Page/
mISDN wiki
.UE
for details.
.TP
.B AF_PHONET
.\" commit: 4b07b3f69a8471cdc142c51461a331226fef248a
Nokia cellular modem IPC/RPC interface (since Linux 2.6.31).
See
.I Documentation/networking/phonet.txt
in the Linux kernel source tree for details.
.TP
.B AF_IEEE802154
.\" commit: 9ec7671603573ede31207eb5b0b3e1aa211b2854
IEEE 802.15.4 WPAN (wireless personal area network) raw packet protocol
(since Linux 2.6.31).
See
.I Documentation/networking/ieee802154.txt
in the Linux kernel source tree for details.
.TP
.B AF_CAIF
.\" commit: 529d6dad5bc69de14cdd24831e2a14264e93daa4
.\" https://lwn.net/Articles/371017/
.\" http://read.pudn.com/downloads157/doc/comm/698729/Misc/caif/Com%20CPU%20to%20Appl%20CPU%20Interface%20DESCRIPTION_LZN901%202002_revR1C.pdf
.\" http://read.pudn.com/downloads157/doc/comm/698729/Misc/caif/Com%20CPU%20to%20Appl%20CPU%20Interface%20PROTOCOL%20SPECIFICATION_LZN901%201708_revR1A.pdf
Ericsson's Communication CPU to Application CPU interface (CAIF) protocol
(since Linux 2.6.36).
See
.I Documentation/networking/caif/Linux\-CAIF.txt
in the Linux kernel source tree for details.
.TP
.B AF_ALG
Interface to kernel crypto API (since Linux 2.6.38).
See
.I Documentation/crypto/userspace\-if.rst
in the Linux kernel source tree for details.
.TP
.B AF_VSOCK
.\" commit: d021c344051af91f42c5ba9fdedc176740cbd238
VMWare VSockets protocol for hypervisor-guest interaction (since Linux 3.9);
has no relation to
.B AF_IUCV
and
.BR AF_SMC .
For further information, see
.BR vsock (7).
.TP
.B AF_KCM
.\" commit: 03c8efc1ffeb6b82a22c1af8dd908af349563314
KCM (kernel connection multiplexer) interface (since Linux 4.6).
See
.I Documentation/networking/kcm.txt
in the Linux kernel source tree for details.
.TP
.B AF_QIPCRTR
.\" commit: bdabad3e363d825ddf9679dd431cca0b2c30f881
Qualcomm IPC router interface protocol (since Linux 4.7).
.TP
.B AF_SMC
.\" commit: f3a3e248f3f7cd9a4bed334022704d7e7fc781bf
SMC-R (shared memory communications over RDMA) protocol (since Linux 4.11),
and SMC-D (shared memory communications, direct memory access) protocol
for intra-node z/VM quest interaction (since Linux 4.19);
has no relation to
.BR AF_RDS ", " AF_IUCV
or
.BR AF_VSOCK .
See
.UR https://tools.ietf.org/html/rfc7609
RFC 7609
.I IBM's Shared Memory Communications over RDMA (SMC-R) Protocol
.UE
for details regarding SMC-R.
See
.UR https://www-01.ibm.com\:/software/network\:/commserver\:/SMC-D/index.html
.I SMC-D Reference Information
.UE
for details regarding SMC-D.
.TP
.B AF_XDP
.\" commit: c0c77d8fb787cfe0c3fca689c2a30d1dad4eaba7
XDP (express data path) interface (since Linux 4.18).
See
.I Documentation/networking/af_xdp.rst
in the Linux kernel source tree for details.
.SH SEE ALSO
.BR socket (2),
.BR socket (7)
